#include "at32f415_gpio_driver.h"

void gpio_setpin(struct AT32F415GPIO *thiss)
{
    thiss->port->scr = thiss->gpio_init_struct.gpio_pins;
}

void gpio_clrpin(struct AT32F415GPIO *thiss)
{
    thiss->port->clr = thiss->gpio_init_struct.gpio_pins;
}
uint8_t gpio_getpin(struct AT32F415GPIO *thiss)
{
    if(thiss->port->idt & thiss->gpio_init_struct.gpio_pins)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
void gpio_setdir(struct AT32F415GPIO *thiss,gpio_mode_type dir,gpio_pull_type pulldir)
{
    thiss->gpio_init_struct.gpio_mode = dir;
    thiss->gpio_init_struct.gpio_pull = pulldir;
    gpio_init(thiss->port, &thiss->gpio_init_struct);
}
void gpio_init_pin(AT32F415GPIO *gpios)
{
    /* enable the gpioa clock */
    crm_periph_clock_enable(gpios->crm_clk_type, TRUE);
    gpio_init(gpios->port, &gpios->gpio_init_struct);
    gpios->set = gpio_setpin;
    gpios->clr = gpio_clrpin;
    gpios->get = gpio_getpin;
    gpios->setdir = gpio_setdir;
}
